//Source file: D:\\test\\com\\ce\\pms\\custservice\\service\\ISubmitTaskService.java
/**
 * 功能描述: 部门协作功能处理接口
 * <p>版权所有：中企动力
 * <p>未经本公司许可，不得以任何方式复制或使用本程序任何部分
 *
 * @author  胡煦
 * Create on:2008-12-16
 * Edit author:
 * Edit on:
 * 修改原因：

 */

package com.ce.pms.custservice.service;

import java.util.List;
import java.util.Map;

import com.ce.pms.base.service.IPmsBaseService;
import com.ce.pms.base.vo.SearchVO;
import com.ce.pms.custservice.model.SubmitTaskDO;
import com.ce.pms.custservice.vo.SubmitTaskSearchVO;
import com.ce.pms.custservice.vo.SubmitTaskVO;
import com.sitechasia.webx.core.support.Page;

/**
 * 部门协作服务
 */
public interface ISubmitTaskService extends IPmsBaseService {
	/**
	 * 方法描述: 作废派工单下的任务
	 * @author 胡煦
	 * Create on:2008-12-22
	 * @param taskId
	 * @return void
	 * Edit author:
	 * Edit on:
	 * 修改原因：
	 */
	public void cancelTaskForDispatch(Long taskId);
	/**
	 * 方法描述: 催单操作合法性校验方法
	 * @author 胡煦
	 * Create on:2008-12-24
	 * @param submitTaskID
	 * @return SubmitTaskDO
	 * Edit author:
	 * Edit on:
	 * 修改原因：
	 */
	public SubmitTaskDO checkHastenIsTrue(Long submitTaskID);
	/**
	 * 方法描述: 任务撤销合法性校验方法
	 * @author 胡煦
	 * Create on:2008-12-24
	 * @param submitTaskID
	 * @return SubmitTaskDO
	 * Edit author:
	 * Edit on:
	 * 修改原因：
	 */
	public SubmitTaskDO checkCancelTaskIsTrue(Long submitTaskID);
	/**
	 * 方法描述: 任务修改合法性校验方法
	 * @author 胡煦
	 * Create on:2008-12-24
	 * @param submitTaskID
	 * @return SubmitTaskDO
	 * Edit author:
	 * Edit on:
	 * 修改原因：
	 */
	public SubmitTaskDO checkEditTaskIsTrue(Long submitTaskID);
	/**
	 * 方法描述: 任务完工合法性校验方法
	 * @author 胡煦
	 * Create on:2008-12-24
	 * @param submitTaskID
	 * @return SubmitTaskDO
	 * Edit author:
	 * Edit on:
	 * 修改原因：
	 */
	public SubmitTaskDO checkDeptReplyIsTrue(Long submitTaskID);
	/**
	 * 提交责任部门任务
	 * @param csEventID - 事件ID
	 * @param tasks - 任务
	 * @return List<Object[]>
	 * @roseuid 4933A34900BB
	 */
	public List<Object[]> addTask(Long csEventID, SubmitTaskVO tasks);

	/**
	 * 部门回复
	 * @param submitTask - 协作任务
	 * @roseuid 49362678035B
	 */
	public SubmitTaskVO deptReply(SubmitTaskVO submitTask);

	/**
	 * 催单
	 * @param dTaskID - 提交任务ID
	 * @roseuid 4933A44E007D
	 */
	public void hasten(Long dTaskID);

	/**
	 * 通知部门处理中
	 * @param submitTaskID - 任务ID
	 * @roseuid 493628E1009C
	 */
	public void noteDeptProcessing(Long submitTaskID);

	/**
	 * 撤销任务
	 * @param taskID
	 * @roseuid 493893380261
	 */
	public void cancelTask(SubmitTaskVO submitTaskVO);

	/**
	 * 编辑提交任务,应用在填写处理意见,填写回复意见两个用例
	 * @param submitTask
	 * @roseuid 49422C99002E
	 */
	public SubmitTaskVO editSubmitTask(SubmitTaskVO submitTask);

	/**
	 * 自动创建一个提交任务
	 * @param csEventID - 客服事件ID
	 * @param submitTaskVO
	 * @return SubmitTaskVO
	 * @roseuid 4943599A0128
	 */
	public SubmitTaskVO autoAddTask(Long csEventID, SubmitTaskVO submitTaskVO);

	/**
	 * 根据ID查询提交任务
	 * @param id
	 * @return SubmitTaskVO
	 * @roseuid 49435BD8035B
	 */
	public SubmitTaskVO getSubmitTaskVOById(Long id);

	/**
	 * 查询任务列表
	 * @param searchVO
	 * @return List<SubmitTaskVO>
	 * @roseuid 49435BFE006D
	 */
	public List<SubmitTaskVO> querySubmitTaskList(SearchVO searchVO);

	/**
	 * 功能描述:  <br>
	 * @param taskId
	 * @return
	 *
	 * Create author:付湘辉 <br>
	 * Create on:2009-1-4  <br>
	 * Edit author:  <br>
	 * Edit on:    <br>
	 * Why:     <br>
	 */
	public SubmitTaskDO getSubmitTaskDOById(Long taskId);

	/**
	 * 分页查询提交任务
	 * @param SubmitTaskSearchVO
	 * @return Page
	 * @roseuid 49435C2C02AF
	 */
	public Page querySubmitTaskByPage(SubmitTaskSearchVO searchVO);

	/**
	 * 方法描述: 通知派工单任务完工
	 * @author 胡煦
	 * Create on:2008-12-17
	 * @param taskId
	 * @return void
	 * Edit author:
	 * Edit on:
	 * 修改原因：
	 */
	public void noteDispatchFormComplete(Long taskId);

	/**
	 * 功能描述: 校验（不能再次提交事件，即对同一个事件不能再创建任务的）部门 <br>
	 * @param submitTaskVO (含事件ID， 部门ID)
	 * @return 不通过的 部门<id,name> , 如果校验全通过，返回null
	 * Create author: 王浩羽 <br>
	 * Create on:Dec 26, 2008  <br>
	 * Edit author:  <br>
	 * Edit on:    <br>
	 * Why:     <br>
	 */
	public Map<Long, String> checkDepartmentsEventSubmitingNotAllow(SubmitTaskVO submitTaskVO);

   /**
    * 功能描述:  事件提交（实际上是创建任务的过程）,如果部门中有一个不能提交，那么整个提交操作都失败<br>
    * @param submitTaskVO
    * @return 校验不通过的 部门<id,name> , 如果校验全通过，返回null
    * Create author: 王浩羽 <br>
    * Create on:Dec 26, 2008  <br>
    * Edit author:  <br>
    * Edit on:    <br>
    * Why:     <br>
    */
   public Map<Long,String> createEventTask(SubmitTaskVO submitTaskVO);
   /**
    * 功能描述: 验证事件提交的合法性<br>
    * @param submitTaskVO
    * @return void
    * Create author: 王浩羽 <br>
    * Create on:Dec 26, 2008  <br>
    * Edit author:  <br>
    * Edit on:    <br>
    * Why:     <br>
    */
   public void checkEventIsAllowSubmit(SubmitTaskVO submitTaskVO);

}
